// app.js
App({
  globalData: {
    userInfo: null,
    currentImage: null,
    themeConfig: {
      // 主题配置
      primary: '#7546C9', // 主题色为紫色调
      success: '#52C41A',
      warning: '#FAAD14',
      error: '#FF4D4F'
    },
    isLogin: false,   // 用户登录状态
    openid: null,     // 用户openid
    cloudEnvId: 'cloud1-5ggm58p509e4ee2f', // 云开发环境ID
    galleryNeedRefresh: false,  // 画廊页面是否需要刷新的标志
    userStatsNeedRefresh: false  // 用户统计数据是否需要刷新的标志
  },
  onLaunch() {
    // 初始化云开发环境
    if (!wx.cloud) {
      console.error('请使用 2.2.3 或以上的基础库以使用云能力');
    } else {
      wx.cloud.init({
        env: this.globalData.cloudEnvId,
        traceUser: true,
      });
      console.log('云开发环境初始化成功');
    }

    // 检查用户登录状态
    this.checkLoginStatus();
  },

  // 检查用户登录状态
  checkLoginStatus() {
    // 从本地存储获取用户信息
    let userInfo = wx.getStorageSync('userInfo');
    const openid = wx.getStorageSync('openid');
    
    // 如果userInfo是字符串，尝试解析为对象
    if (userInfo && typeof userInfo === 'string') {
      try {
        userInfo = JSON.parse(userInfo);
      } catch (e) {
        console.error('解析用户信息失败:', e);
        userInfo = null;
      }
    }
    
    if (userInfo && openid) {
      this.globalData.userInfo = userInfo;
      this.globalData.openid = openid;
      this.globalData.isLogin = true;
      console.log('已从本地存储恢复登录状态');
    } else {
      console.log('未找到本地存储的登录状态');
    }
  },

  // 用户登录
  login() {
    return new Promise((resolve, reject) => {
      // 调用微信登录接口获取code
      wx.login({
        success: res => {
          if (res.code) {
            // 调用云函数进行登录
            wx.cloud.callFunction({
              name: 'login',
              data: {
                code: res.code
              },
              success: result => {
                const openid = result.result.openid;
                
                // 将openid保存到全局数据和本地存储
                this.globalData.openid = openid;
                wx.setStorageSync('openid', openid);
                
                // 返回openid，由调用者处理后续注册流程
                resolve({ openid: openid });
              },
              fail: err => {
                console.error('调用云函数登录失败', err);
                reject(err);
              }
            });
          } else {
            console.error('微信登录失败', res);
            reject(res);
          }
        },
        fail: err => {
          console.error('微信登录失败', err);
          reject(err);
        }
      });
    });
  },

  // 获取设备信息（替代getSystemInfoSync）
  getDeviceInfo() {
    return wx.getDeviceInfo();
  },
  
  // 获取窗口信息（替代getSystemInfoSync）
  getWindowInfo() {
    return wx.getWindowInfo();
  },
  
  // 获取应用基本信息（替代getSystemInfoSync）
  getAppBaseInfo() {
    return wx.getAppBaseInfo();
  },

  // 检查用户是否已注册
  checkUserRegistered(openid) {
    return new Promise((resolve, reject) => {
      const db = wx.cloud.database();
      
      // 查询用户集合
      db.collection('users')
        .where({
          _openid: openid
        })
        .get()
        .then(res => {
          if (res.data.length > 0) {
            // 用户已注册
            resolve(res.data[0]);
          } else {
            // 用户未注册
            resolve(null);
          }
        })
        .catch(err => {
          console.error('查询用户失败', err);
          reject(err);
        });
    });
  },

  // 用户注册
  register(userInfo) {
    return new Promise((resolve, reject) => {
      const db = wx.cloud.database();
      
      // 添加用户到数据库
      db.collection('users')
        .add({
          data: {
            ...userInfo,
            createTime: db.serverDate(), // 服务器时间
            updateTime: db.serverDate()  // 服务器时间
          }
        })
        .then(res => {
          // 注册成功，更新全局数据
          userInfo._id = res._id;
          this.globalData.userInfo = userInfo;
          this.globalData.isLogin = true;
          
          // 将用户信息保存到本地存储，确保使用JSON格式
          wx.setStorageSync('userInfo', JSON.stringify(userInfo));
          
          resolve(userInfo);
        })
        .catch(err => {
          console.error('注册用户失败', err);
          reject(err);
        });
    });
  },

  // 退出登录
  logout() {
    // 清除本地存储的用户信息
    wx.removeStorageSync('userInfo');
    
    // 保留openid，方便下次登录
    this.globalData.userInfo = null;
    this.globalData.isLogin = false;
  }
})